package com.example.myfragmentpagetest;

import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.TextView;

import com.netease.adapter.MyFragmentAdapter;

public class Main extends FragmentActivity {
	private String Tag="Main";
	ViewPager vPager;
	ImageView imgView;
	private TextView textView1,textView2,textView3;
	private int offset = 0;// 动画图片偏移量
	private int currIndex = 0;// 当前页卡编号
	private int bmpW;// 动画图片宽度
	private MyFragmentAdapter myFragmentAdapter;
	private int screenWidth;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Log.v(Tag, "执行了onCreate");
		init();
	}
	/**
	 * 
	 * @标题: init 
	 * @Description: 初始化界面
	 * @参数     
	 * @返回值 void    
	 * @异常
	 * @作者 许圣霖
	 * @时间 下午4:18:46
	 */
	private void init() {
		initTextView();
		Log.v(Tag, "执行了initTextView");
		screenWidth=initButtonImageCursor();
		Log.v(Tag, "执行了initButtonImageCursor");
		initPageView(screenWidth);
		Log.v(Tag, "执行了initPageView");
	}
	/**
	 * 
	 * @标题: initPageView 
	 * @Description: 初始化Page
	 * @参数    传入屏幕宽度 
	 * @返回值 void    
	 * @异常
	 * @作者 许圣霖
	 * @时间 下午4:18:17
	 */
	private void initPageView(int screenWidth) {
		//初始化viewPage
		//获得viewPage控件
		vPager=(ViewPager) findViewById(R.id.vPager);
		Log.v(Tag, "initPageView");
		//获得Fragment管理对象
		FragmentManager fgment=getSupportFragmentManager();
		MyFragmentAdapter mAdapter=new MyFragmentAdapter(fgment);
		vPager.setAdapter(mAdapter);
		vPager.setCurrentItem(0);
		vPager.setOnPageChangeListener(new MyOnPageChangeListener(screenWidth));
	}
	/**
	 * 
	 * @标题: initButtonImageCursor 
	 * @Description: 初始化底部图标指针 
	 * @参数     
	 * @返回值 int 屏幕宽度像素   
	 * @异常
	 * @作者 许圣霖
	 * @时间 下午3:58:33
	 */
	private int initButtonImageCursor() {
		//获取布局上面的ImageView
		imgView=(ImageView) findViewById(R.id.main_cursor);
		//给bmpW设置值
		bmpW=getImgCursorWidth();
		int widthPx=getWidthPx();
		int offset = getOffset(widthPx);
		Matrix matrix = new Matrix();
		//将Matrix举证变换成Matrix*(x,y)的结果
		matrix.postTranslate(offset, 0);
		//设置初始动画矩阵
		imgView.setImageMatrix(matrix);
		return widthPx;
	}
	/**
	 * 
	 * @标题: getOffset 
	 * @Description: 计算底部图片指针的偏移量
	 * @参数 @param widthPx
	 * @参数 @return    
	 * @返回值 int    
	 * @异常
	 * @作者 许圣霖
	 * @时间 下午3:57:31
	 */
	private int getOffset(int widthPx) {
		//计算举证偏移
		int offsetMexit=(widthPx/3-bmpW)/2;
		return offsetMexit;
	}
	/**
	 * 
	 * @标题: getWidthPx 
	 * @Description: 获取屏幕宽度分辨率的方法
	 * @参数     
	 * @返回值 void    
	 * @异常
	 * @作者 许圣霖
	 * @时间 下午3:38:05
	 */
	private int  getWidthPx() {
		int widthPx;
		//获取平面宽度分辨率
		//定义获取分辨率的类对象
		DisplayMetrics windowDisplay=new DisplayMetrics();
		getWindowManager().
		getDefaultDisplay().
		getMetrics(windowDisplay);//这个方法后就可以用DisplayMetrics对象来获取屏幕信息
		//获取宽度分辨率
		widthPx=windowDisplay.widthPixels;
		return widthPx;
	}

	/**
	 * 
	 * @标题: getImgCursorWidth 
	 * @Description: 获取底部图标宽度
	 * @参数     
	 * @返回值 void    
	 * @异常
	 * @作者 许圣霖
	 * @时间 下午3:27:06
	 */

	private int getImgCursorWidth() {
		int bitCursorWidth;
		//获取程序中资源对象
		Resources res=getResources();
		//使用图像工厂解析资源文件中的图片资源，获取bitmap
		Bitmap bitMap=BitmapFactory.decodeResource(res, R.drawable.abs__ab_transparent_dark_holo);
		//获取图像宽度
		bitCursorWidth=bitMap.getWidth();
		return bitCursorWidth;
	}


	/**
	 * 
	 * @标题: initTextView 
	 * @Description: 初始化底部文本监听
	 * @参数     
	 * @返回值 void    
	 * @异常
	 * @作者 许圣霖
	 * @时间 下午3:28:55
	 */
	private void initTextView() {
		textView1=(TextView) findViewById(R.id.tv_1);
		textView2=(TextView) findViewById(R.id.tv_2);
		textView3=(TextView) findViewById(R.id.tv_3);
		textView1.setOnClickListener(new TButtonListener(0));
		textView2.setOnClickListener(new TButtonListener(1));
		textView3.setOnClickListener(new TButtonListener(2));
	}

	/**
	 * 
	 * @ClassName: TButtonListener 
	 * @Description: 监听底部文本点击事件监听器
	 * @author 许圣霖
	 * @date 2014年6月8日 下午3:29:36 
	 *
	 */

	class TButtonListener implements OnClickListener{
		int index;

		public TButtonListener(int index){
			this.index=index;
		}
		@Override
		public void onClick(View v) {
			vPager.setCurrentItem(index);

		}

	}
	//TODO
	class MyOnPageChangeListener implements OnPageChangeListener{
		int move_gap;
		public MyOnPageChangeListener(int screenWidth){
			move_gap=screenWidth/3;
		}

		@Override
		public void onPageScrollStateChanged(int arg0) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onPageScrolled(int arg0, float arg1, int arg2) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onPageSelected(int arg0) {
			Animation animation = new TranslateAnimation(move_gap*currIndex, move_gap*arg0, 0, 0);
			currIndex = arg0;
			animation.setFillAfter(true);// True:图片停在动画结束位置
			animation.setDuration(300);
			imgView.startAnimation(animation);
		}
		
	}
}
